#include <cstdio>
#include <algorithm>
#include <cstring>
#define lson l,m,rt<<1 
#define rson m+1,r,rt<<1|1
using namespace std;
const int N=1e5+5;
const int INF=0x3f3f3f3f;
int n;
double x1,y1,x2,y2;
double sum[N<<2];
int cnt[N<<2];
//不同的左右端点的数量
double all[N];
struct Seg{
    //线段左右端点(x1,x2)  纵坐标值(y)   
    double l,r,h;
    int d;
    Seg(){}
    Seg(double l,double r,double h,int d):l(l),r(r),h(h),d(d){}
    //y从小到大排序 扫描线从下往上
    bool operator < (const Seg& rhs) const{
        return h<rhs.h;
    }
}a[N];
void push_up(int l,int r,int rt){
    if(cnt[rt]){   
        sum[rt]=all[r+1]-all[l];
    }
    else if(l==r){
        sum[rt]=0;
    }
    else{
        sum[rt]=sum[rt<<1]+sum[rt<<1|1];
    }
}
//要更新(l,r)区间，当前节点区间是(L,R) 当前节点编号是rt
void update(int L,int R,int v,int l,int r,int rt){
    if(L<=l && r<=R){
        cnt[rt]+=v;
        push_up(l,r,rt);
        return;
    }
    int m=(l+r)>>1;
    //更新该区间左半部分
    if(L<=m){
        update(L,R,v,lson);
    }
    if(R>m){
        update(L,R,v,rson);
    }
    push_up(l,r,rt);
}
int main(void){
    int c=1;
    while(~scanf("%d",&n) && n){
        for(int i=1;i<=n;i++){
            //左下角 右上角
            scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
            a[i]=Seg(x1,x2,y1,1);
            a[i+n]=Seg(x1,x2,y2,-1);
            all[i]=x1;
            all[i+n]=x2;
        }
        n<<=1;
        sort(a+1,a+1+n);
        sort(all+1,all+1+n);
        //注意unique用法，去重并返回新数组的末地址减去数组初始地址，得到不重复个数，而且要先排序
        int m=unique(all+1,all+1+n)-all-1;
        memset(cnt,0,sizeof(cnt));
        memset(sum,0,sizeof(sum));
        double ans=0;
        //从下到上扫描直线
        for(int i=1;i<n;i++){
            //printf("%d---%d %d\n",a[i].l,a[i].r,a[i].h);
            //？？？
            //在端点集中找到大于等于当前直线左右端点的
            int l=lower_bound(all+1,all+1+m,a[i].l)-all;
            int r=lower_bound(all+1,all+1+m,a[i].r)-all;
            //printf("%d %d\n",l,r);
            if(l<r){
                update(l,r-1,a[i].d,1,m,1);
            }
            ans+=sum[1]*(a[i+1].h-a[i].h);
        }
        //printf("%d---%d %d\n",a[n].l,a[n].r,a[n].h);
        printf("Test case #%d\nTotal explored area: %.2lf\n\n",c++,ans);
    }
    return 0;
}